#include <bits/stdc++.h>

using namespace std;

bool lt5(int x) {
    return x < 5;
}

bool gt5(int x) {
    return 5 < x;
}

int main() {

    vector<int> v = {1, 3, 5, 7, 9, 2, 4, 6, 8, 0};

    for (int i = 0; i < v.size(); i++)
        cout << v[i] << " ";
    cout << endl;

    cout << find(v.begin(), v.end(), 5) - v.begin() << endl;//第一次出现5的下标
    if ( find(v.begin(), v.end(), 10) == v.end()) {
        cout << "10 not found" << endl;
    }
    cout<<find_if(v.begin(),v.end(),lt5)-v.begin()<<endl;//第一个小于5的元素的下标
    cout<<find_if(v.begin(),v.end(),bind2nd(less<int>(),5))-v.begin()<<endl;//第一个小于5的元素的下标
    cout<<find_if(v.begin(),v.end(),gt5)-v.begin()<<endl;//第一个大于5的元素的下标
    cout<<find_if(v.begin(),v.end(),bind1st(less<int>(),5))-v.begin()<<endl;//第一个大于5的元素的下标

    cout << count(v.begin(), v.end(), 5) << endl;//等于5的元素个数
    cout << count_if(v.begin(), v.end(), gt5) << endl;// 5<x的元素个数
    cout << count_if(v.begin(), v.end(), bind1st(less<int>(), 5)) << endl;// 5<x的元素个数
    cout << count_if(v.begin(), v.end(), lt5) << endl;// x<5的元素个数
    cout << count_if(v.begin(), v.end(), bind2nd(less<int>(), 5)) << endl;// x<5的元素个数
    return 0;

}

//bind1st函数代表这么一个操作:  x op value;      bind2nd函数代表：value op x。